package cn.stylefeng.guns.modular.business.app.service;

import cn.stylefeng.guns.core.pojo.response.ResponseData;
import cn.stylefeng.guns.modular.business.app.controller.dto.CreatePayOrderDTO;
import cn.stylefeng.guns.modular.business.app.controller.dto.GetPayStatusDTO;
import cn.stylefeng.guns.modular.business.app.controller.vo.*;
import cn.stylefeng.guns.modular.business.frequency.orderfinish.model.param.OrderFinishRecordVO;
import cn.stylefeng.guns.modular.business.frequency.ordersub.model.param.OrderVO;

import java.util.List;

public interface ApiPayService {
    /**
     * 获取省市编码信息
     */
    ResponseData getProvinceAndCityCode();

    /**
     * 获取银行代码
     */
    ResponseData getBankCode();

    /**
     * 在网点代收页面完成支付
     */
    ResponseData<CreatePayOrderDTO> paymentOfSpecifiedAmount(PaymentOfSpecifiedAmountVO paymentOfSpecifiedAmountVO);

    /**
     * 根据订单完成支付
     */
    ResponseData<CreatePayOrderDTO> payByOrder(OrderFinishRecordVO orderFinishRecordVO);

    /**
     * 根据订单唯一标识查询订单支付状态
     */
    ResponseData<GetPayStatusDTO> getPayStatus(GetPayStatusVO getPayStatusVO);

    /**
     * 在修改订单页面完成现付-线上支付
     */
    ResponseData<CreatePayOrderDTO> payByUpdateOrder(PayByUpdateOrderVO payByUpdateOrderVO);

    /**
     * 在创建订单生成支付宝或微信支付信息
     */
    ResponseData<CreatePayOrderDTO> getPayInfo(GetPayInfoVO getPayInfoVO);

    /**
     * 获取openId
     */
    ResponseData getOpenId(String code);

    /**
     * 根据订单id查询订单支付状态
     * @param ids
     * @return
     */
    ResponseData<GetPayStatusDTO> getPayStatusByOrderId(GetPayStatusByOrderIdVo getPayStatusByOrderIdVo);

    /**
     * 在微信支付前生成一个唯一标识
     * @return
     */
    ResponseData getPayId();

    /**
     * 根据订单唯一标识查询订单支付状态
     * @param getWxPayStatusVO
     * @return
     */
    ResponseData<GetPayStatusDTO> getWxPayStatus(GetWxPayStatusVO getWxPayStatusVO);

    /**
     * 完成欠付支付
     * @param payByUpdateOrderVO
     * @return
     */
    ResponseData<CreatePayOrderDTO> payBackOrder(PayByUpdateOrderVO payByUpdateOrderVO);
}
